EJERCICIO 1

Gabriel Omar Maya Briseño

Invoke data set Mode from package mlogit. To do this you need to first load the package. This is a data set with choices about mode of transportation. This is done as follows:

data("Mode")

Once you have loaded the data set, answer the following questions: Describe this data set. How many variables are there and of which type (i.e., categorical/quantitative)?

glimpse(Mode)
## Rows: 453
## Columns: 9
## $ choice       <fct> car, rail, car, car, car, car, car, car, bus, car, rail, …
## $ cost.car     <dbl> 1.5070097, 6.0569985, 5.7946769, 1.8691439, 2.4989523, 4.…
## $ cost.carpool <dbl> 2.3356118, 2.8969191, 2.1374543, 2.5724266, 1.7220099, 0.…
## $ cost.bus     <dbl> 1.800512, 2.237128, 2.576385, 1.903518, 2.686000, 1.84765…
## $ cost.rail    <dbl> 2.358920, 1.855450, 2.747479, 2.268276, 2.973866, 2.31005…
## $ time.car     <dbl> 18.503200, 31.311107, 22.547429, 26.090282, 4.699140, 3.0…
## $ time.carpool <dbl> 26.338233, 34.256956, 23.255171, 29.896023, 12.414084, 9.…
## $ time.bus     <dbl> 20.86779, 67.18189, 63.30906, 19.75270, 43.09204, 12.8256…
## $ time.rail    <dbl> 30.03347, 60.29313, 49.17164, 13.47268, 39.74325, 43.5442…

How many different modes of transportation are in this data set? What is the most popular mode? What is the least popular mode?

summary(Mode)
##      choice       cost.car       cost.carpool       cost.bus    
##  car    :218   Min.   :0.4099   Min.   :0.1293   Min.   :1.013  
##  carpool: 32   1st Qu.:3.6964   1st Qu.:0.9519   1st Qu.:1.783  
##  bus    : 81   Median :4.8796   Median :1.6665   Median :2.027  
##  rail   :122   Mean   :4.8735   Mean   :1.6863   Mean   :2.036  
##                3rd Qu.:6.2255   3rd Qu.:2.4581   3rd Qu.:2.321  
##                Max.   :8.8555   Max.   :3.2953   Max.   :2.740  
##    cost.rail        time.car       time.carpool       time.bus     
##  Min.   :1.272   Min.   : 2.404   Min.   : 8.385   Min.   : 1.969  
##  1st Qu.:1.947   1st Qu.:21.835   1st Qu.:28.391   1st Qu.:25.457  
##  Median :2.198   Median :37.497   Median :40.637   Median :41.415  
##  Mean   :2.212   Mean   :37.044   Mean   :39.771   Mean   :39.923  
##  3rd Qu.:2.476   3rd Qu.:53.104   3rd Qu.:51.843   3rd Qu.:52.805  
##  Max.   :3.113   Max.   :66.871   Max.   :65.009   Max.   :75.681  
##    time.rail     
##  Min.   : 4.621  
##  1st Qu.:28.143  
##  Median :40.034  
##  Mean   :39.505  
##  3rd Qu.:49.172  
##  Max.   :73.998
ggplot(Mode)+
  geom_bar(aes(choice, fill=choice), color="black", show.legend = FALSE)+
  theme_bw()

In general, what is the most expensive mode? The least expensive?

ggplot(Mode)+
  geom_density(aes(cost.car, fill="car"), color="black", alpha=0.5)+
  geom_density(aes(cost.carpool , fill="carpool"), color="black", alpha=0.5)+
  geom_density(aes(cost.bus, fill="bus"), color="black", alpha=0.5)+
  geom_density(aes(cost.rail, fill="rail"), color="black", alpha=0.5)+
  scale_fill_manual(values=c("car"= "firebrick", "carpool"="dodgerblue", "bus"="darkgoldenrod2", "rail"="cyan"), name="Mode")+
  xlab("Cost")+
theme_bw()

Create a plot showing the univariate distributions of time by car and time by bus. Discuss.

grafica_time <- ggplot(Mode)+
  geom_density(aes(time.car, fill="car"), color="black", alpha=0.5)+
  geom_density(aes(time.carpool , fill="carpool"), color="black", alpha=0.5)+
  geom_density(aes(time.bus, fill="bus"), color="black", alpha=0.5)+
  geom_density(aes(time.rail, fill="rail"), color="black", alpha=0.5)+
  scale_fill_manual(values=c("car"= "firebrick", "carpool"="dodgerblue", "bus"="darkgoldenrod2", "rail"="cyan"), name="Mode")+
  xlab("Time")+
theme_bw()


ggplotly(grafica_time)  

How do choices relate to cost by the different modes?

varnum <- Mode |> dplyr::select(where(is.numeric))
varnum <- names(varnum)

for (var in varnum) {
grafica_box <- ggplot(Mode)+
  geom_boxplot(aes(choice, eval(as.name(var)), fill=choice), show.legend=FALSE)+
  ylab(var)+
  theme_bw()
  
  print(grafica_box)
    
}

CAPITULO 1

Importacion de datos

# Read a csv file data and name the object
mc_mode_choice <-  read_csv(system.file("extdata", "mc_commute.csv", package = "discrtr"), show_col_types = FALSE)
head(mc_mode_choice)
## # A tibble: 6 × 39
##   RespondentID choice avcycle avwalk avhsr avcar timecycle timewalk accesshsr
##          <dbl>  <dbl>   <dbl>  <dbl> <dbl> <dbl>     <dbl>    <dbl>     <dbl>
## 1    566872636      3       0      1     1     0      6.21     21.3      3   
## 2    566873140      3       0      1     1     1      3.73     12.8      4   
## 3    566874266      3       0      0     1     1 100000    100000        3   
## 4    566874842      2       1      1     1     0      5.83     20       10.7 
## 5    566881170      2       1      1     1     0      5.83     20        6.21
## 6    566907438      2       0      1     1     0 100000        10        7.14
## # ℹ 30 more variables: waitingtimehsr <dbl>, transfer <dbl>, timehsr <dbl>,
## #   timecar <dbl>, parking <dbl>, vehind <dbl>, owncycle <dbl>, gender <dbl>,
## #   work <dbl>, visa <dbl>, age <dbl>, solo <dbl>, shared <dbl>, family <dbl>,
## #   child <dbl>, primary_caregiver <dbl>, LAT <dbl>, LONG <dbl>, DAUID <dbl>,
## #   mhi <dbl>, dwell_den <dbl>, lum <dbl>, st_den <dbl>, inter_den <dbl>,
## #   SF_P_ratio <dbl>, side_den <dbl>, Shelters_SD <dbl>, Shelters_D <dbl>,
## #   Shelters_A <dbl>, Shelters_SA <dbl>

También es conveniente mostrar las variables (y su respectiva clase)

glimpse(mc_mode_choice)
## Rows: 1,376
## Columns: 39
## $ RespondentID      <dbl> 566872636, 566873140, 566874266, 566874842, 56688117…
## $ choice            <dbl> 3, 3, 3, 2, 2, 2, 2, 3, 3, 2, 2, 4, 2, 2, 3, 2, 4, 3…
## $ avcycle           <dbl> 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ avwalk            <dbl> 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1…
## $ avhsr             <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ avcar             <dbl> 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0…
## $ timecycle         <dbl> 6.211180e+00, 3.726708e+00, 1.000000e+05, 5.828157e+…
## $ timewalk          <dbl> 21.31439, 12.78863, 100000.00000, 20.00000, 20.00000…
## $ accesshsr         <dbl> 3.00, 4.00, 3.00, 10.66, 6.21, 7.14, 10.66, 15.00, 2…
## $ waitingtimehsr    <dbl> 15.00, 15.00, 2.00, 10.23, 10.23, 10.23, 10.23, 3.00…
## $ transfer          <dbl> 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+…
## $ timehsr           <dbl> 5, 10, 15, 8, 5, 3, 20, 25, 8, 5, 5, 25, 2, 3, 25, 5…
## $ timecar           <dbl> 100000, 2, 4, 100000, 100000, 100000, 5, 17, 4, 1000…
## $ parking           <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0…
## $ vehind            <dbl> 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0…
## $ owncycle          <dbl> 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0…
## $ gender            <dbl> 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0…
## $ work              <dbl> 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0…
## $ visa              <dbl> 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ age               <dbl> 21, 23, 20, 20, 19, 19, 49, 19, 20, 23, 25, 38, 20, …
## $ solo              <dbl> 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ shared            <dbl> 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0…
## $ family            <dbl> 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1…
## $ child             <dbl> 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1…
## $ primary_caregiver <dbl> 1e+05, 1e+05, 0e+00, 1e+05, 1e+05, 1e+05, 1e+00, 0e+…
## $ LAT               <dbl> 43.26302, 43.25885, 43.25222, 43.25782, 43.25562, 43…
## $ LONG              <dbl> -79.90074, -79.90476, -79.93953, -79.91941, -79.9204…
## $ DAUID             <dbl> 35250503, 35250675, 35250964, 35250669, 35250669, 35…
## $ mhi               <dbl> 3.3902, 4.5770, 6.3081, 5.4911, 5.4911, 9.8697, 6.30…
## $ dwell_den         <dbl> 941.3980, 1688.5725, 534.6675, 892.1744, 892.1744, 3…
## $ lum               <dbl> 0.805636, 0.280830, 0.455743, 0.479460, 0.479460, 0.…
## $ st_den            <dbl> 14.376206, 19.497536, 13.556608, 14.307826, 14.30782…
## $ inter_den         <dbl> 39.224916, 109.529025, 15.276213, 45.883253, 45.8832…
## $ SF_P_ratio        <dbl> 0.230931, 0.356169, 0.074477, 0.268249, 0.268249, 0.…
## $ side_den          <dbl> 22.633222, 39.640032, 8.228497, 37.457574, 37.457574…
## $ Shelters_SD       <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ Shelters_D        <dbl> 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1…
## $ Shelters_A        <dbl> 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0…
## $ Shelters_SA       <dbl> 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…

Clase de datos en R

mc_mode_choice$choice[1]-mc_mode_choice$choice[4]
## [1] 1

Convercion de una variable a un factor

mc_mode_choice$choice <-  factor(mc_mode_choice$choice, 
                                 labels = c("Cycle", "Walk", "HSR", "Car"))
summary(mc_mode_choice$choice)
## Cycle  Walk   HSR   Car 
##    48   711   336   281

Duracion en un viaje en bicicleta

summary(mc_mode_choice$timecycle)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
##      0.29      3.79      5.83  34014.86 100000.00 100000.00

Duracion Promedio de un viaje en bicicleta

time.Active.clean <- mc_mode_choice |> dplyr::select(timecycle, timewalk) |> 
                     filter(timecycle!=100000 & timewalk!=100000)
summary(time.Active.clean)
##    timecycle          timewalk    
##  Min.   : 0.2914   Min.   : 1.00  
##  1st Qu.: 2.9141   1st Qu.:10.00  
##  Median : 4.3711   Median :15.00  
##  Mean   : 4.5852   Mean   :16.10  
##  3rd Qu.: 5.8282   3rd Qu.:20.00  
##  Max.   :17.4845   Max.   :62.11

costo/duracion de un ir caminando o en bicleta

ggplot(data = time.Active.clean) +
  geom_area(aes(x = timecycle), stat = "bin", binwidth = 5, fill = "blue", color = "black", alpha = 0.6) +
  geom_area(aes(x = timewalk), stat = "bin", binwidth = 5, fill = "yellow", color = "black", alpha = 0.6) +
  xlab("Tiempo (minutos)")

La densidad de acera está medida en km/km^2 A continuación crearemos el diagrama de caja. Comenzamos definiendo un objeto ggplot2, en este caso, queremos trazar la variable categórica en el eje x y la variable cuantitativa en el eje y:

mc_mode_choice |> select(c("choice", "side_den")) |> summary()
##    choice       side_den    
##  Cycle: 48   Min.   : 0.00  
##  Walk :711   1st Qu.:18.19  
##  HSR  :336   Median :22.63  
##  Car  :281   Mean   :24.18  
##              3rd Qu.:35.70  
##              Max.   :59.41
ggplot(mc_mode_choice)+
  geom_boxplot(aes(choice, side_den))

PREGUNTA 4-8

  1. Describe this data set. How many variables are there and of which type (i.e., categorical/quantitative)?

Hay 4 variables que es carro, caminar, compartir el carro y tren, de las cuales se hicieron 39 entrevistas

  1. How many different modesof transportation are in this data set? What is the most popular mode? What is the least popular mode?

Son 4 diferentes y el mas popular es compartir el carro y el menos popular es el tren

  1. Ingeneral, what is the most expensive mode? The least expensive?

El mas caro es el carro y el menos caro es el camion

  1. Create a plot showing the univariatedistributions of time by car and time by bus. Discuss.
grafica_time <- ggplot(Mode)+
  geom_density(aes(time.car, fill="car"), color="black", alpha=0.5)+
  geom_density(aes(time.bus, fill="bus"), color="black", alpha=0.5)+
  scale_fill_manual(values=c("car"= "firebrick", "bus"="darkgoldenrod2"), name="Mode")+
  xlab("Time")+
theme_bw()


ggplotly(grafica_time)  
  1. How do choices relate to cost by the different modes?

El mas caro es viajar en carro, se debe al uso de la gasolina , ademas de ser el menos denso El segundo mas caro es compartir carro, porque aunque la gasolina se puede dividie entre varias personas aun es mayor que los anteriores el tren y el camion son muy similares, tienden a tener un precio mas accesible que el carro .

Conclusiones

En este trabajo se realizó una exploración inicial de datos relacionados con las elecciones de modo de transporte, utilizando los paquetes mlogit, discrtr y herramientas de visualización como ggplot2 y plotly en R. A partir del análisis del conjunto de datos Mode, se identificaron las variables disponibles, su tipo (categóricas y cuantitativas), y se estudió la popularidad de las opciones de transporte, así como sus costos y tiempos asociados.

Los resultados mostraron diferencias claras en los costos y tiempos entre los distintos modos de transporte, siendo el automóvil generalmente más costoso, mientras que modos como el autobús o el tren resultaron más accesibles económicamente. Los análisis gráficos, como las densidades y diagramas de caja, permitieron visualizar la distribución de variables clave y cómo se relacionan con la elección de transporte.

Posteriormente, se trabajó con otro conjunto de datos (mc_commute.csv) para profundizar en el análisis de variables como la duración promedio de viajes en bicicleta y a pie, la distribución del tiempo de viaje, y la densidad de acera en diferentes modos de transporte. La conversión adecuada de variables categóricas y la limpieza de datos atípicos (como valores extremadamente altos) fueron pasos esenciales para lograr un análisis más preciso.

En conjunto, este ejercicio permitió familiarizarse con el manejo de datos en R, la visualización efectiva y la interpretación de patrones de comportamiento de transporte, sentando bases importantes para estudios posteriores de análisis de elección discreta y modelado estadístico más avanzado.